home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1994 December / PSL Monthly Shareware CD-ROM (Public Software Library)(December 1994).bin / prgmming / dos / asm / oper.asm < prev    next >
Assembly Source File  |  1984-03-04  |  3KB  |  113 lines

  1.         NAME    OPTEST
  2.         PAGE    55,132
  3.         TITLE   'OPTEST - TEST MICROSOFT ASSEMBLER OPERATORS'
  4. ;
  5. ; SHOW OPERATION OF VARIOUS OPERATORS AND DEMONSTRATE SOME
  6. ; NOTATIONAL IDIOSYNCRACIES IN THE MICROSOFT IBM PC ASSEMBLER.
  7. ;
  8. ; RAY DUNCAN, NOVEMBER 1983
  9. ;
  10. ;
  11. ; EVERY OTHER ASSEMBLER I HAVE EVER ENCOUNTERED WILL DISPLAY
  12. ; THE TRUE HEX EQUIVALENT OF AN EQUATE IN THE OBJECT CODE COLUMN.
  13. ; THE MICROSOFT ASSEMBLER, HOWEVER, SHOWS A SIGNED HEX INTEGER!
  14. ;
  15. NEG_ONE EQU     -1      ;SHOULD DISPLAY AS FFFF
  16.  
  17.  
  18. ; FOR UNKNOWN REASONS, THE MICROSOFT ASSEMBLER ALSO FAILS TO DISPLAY
  19. ; THE BYTE SWAPPED NATURE OF SOME 16 BIT VALUES.
  20.  
  21.         DW      1
  22.  
  23.  
  24. ; THE MICROSOFT ASSEMBLER MANUAL SAYS NOTHING ABOUT THE SHR
  25. ; AND SHL OPERATORS.  HOWEVER, AN EXAMPLE ON PAGE 4-21 STATES
  26. ; THAT THE OPERATION 101B SHL (2*2) SHOULD RETURN 01010000B OR 50H,
  27. ; IMPLYING THAT THE ORDER OF ARGUMENTS IS DATA SHL SHIFT_COUNT.
  28.  
  29.         DW      101B SHL (2*2)
  30.  
  31. ; SINCE MICROSOFT'S OWN EXAMPLE DOESN'T WORK WITH THEIR ASSEMBLER,
  32. ; BY EXPERIMENTING WE FIND THAT THE EXPECTED ORDER OF ARGUMENTS IS
  33. ; SHIFT_COUNT SHL DATA. THIS CONFLICTS WITH THE INTEL SPECIFICATION.
  34.  
  35.         DW      0 SHL 1
  36.         DW      1 SHL 1
  37.         DW      2 SHL 1
  38.  
  39. ; THE SHR OPERATOR DOESN'T WORK CORRECTLY.  APPARENTLY GIVES
  40. ; THE SAME RESULTS AS SHL...
  41.  
  42.         DW      2 SHL 1
  43.         DW      2 SHR 1
  44.  
  45. ; EXCEPT WHEN IT GIVES NO RESULT AT ALL...
  46.  
  47.         DW      1 SHL 8
  48.         DW      1 SHR 8
  49.  
  50. ; SHR MAY EVEN GIVE DIFFERENT RESULTS WITH EQUIVALENT DATA
  51.  
  52.         DW      16 SHR -1
  53.         DW      16 SHR 0FFFFH
  54.  
  55. ; SOMETIMES THE SHL OPERATOR SEEMS TO PERFORM A "LOGICAL SHIFT"
  56.  
  57.         DW      1 SHL -1
  58.         DW      15 SHL -1
  59.  
  60. ; OTHER TIMES, IT APPEARS TO PERFORM A CIRCULAR SHIFT
  61.  
  62.         DW      16 SHL -1
  63.  
  64. ; THE EQ OPERATOR DOESN'T WORK PROPERLY
  65.  
  66.         DW      1 EQ 1
  67.         DW      1 EQ -1
  68.  
  69. ; THE EQ OPERATOR CAN GIVE DIFFERENT RESULTS WITH EQUIVALENT DATA
  70.  
  71.         DW      1 EQ -1
  72.         DW      1 EQ 0FFFFH
  73.  
  74. ; THE NE OPERATOR IS SIMILARLY AFFLICTED
  75.  
  76.         DW      1 NE 1
  77.         DW      1 NE -1
  78.         DW      1 NE 0FFFFH
  79.  
  80. ; THE LE, LT, GE, AND GT OPERATORS GIVE CONFUSING RESULTS
  81.  
  82.         DW      -1 LT 1
  83.         DW      -1 LE 1
  84.         DW      -1 GT 1
  85.         DW      -1 GE 1
  86.  
  87. ; AGAIN, THESE OPERATORS CAN GIVE DIFFERENT RESULTS WITH
  88. ; EQUIVALENT DATA
  89.  
  90.         DW      1 GE -1
  91.         DW      1 GE 0FFFFH
  92.  
  93. ; THE NOT OPERATOR FAILS MISERABLY ON SOME SIGNED INTEGERS
  94.  
  95.         DW      NOT -1
  96.  
  97.  
  98.  
  99. ; SIMILARLY, THE OR OPERATOR FLUBS WITH SIGNED INTEGERS
  100.  
  101.         DW      -1 OR 0
  102.         DW      0FFFFH OR 0
  103.  
  104. ; THE XOR OPERATOR APPARENTLY WORKS AS AN INCLUSIVE OR
  105. ; INSTEAD OF EXCLUSIVE OR
  106.  
  107.         DW      0 XOR 0
  108.         DW      1 XOR 0
  109.         DW      0 XOR 1
  110.         DW      1 XOR 1
  111.  
  112.         END
  113.